#pragma once
#include "ASN1Encodable.h"

namespace AppliedCryptography
{
	class ASN1Bool : public ASN1Encodable
	{
	private:
		bool _value;

	protected:
		ASN1Bool(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number);
		ASN1Bool(ClassBits classBits, ConstructedBit constucted, TypeNumberBits number, bool value);

	public:
		ASN1Bool();
		ASN1Bool(bool value);

	public:
		virtual ASN1Bool& set(bool value);
		virtual ASN1Bool& operator=(bool value);
		virtual bool get() const;

	public:
		virtual std::vector<byte> getContentBits() const;

	public:
		static ASN1Bool getInstance(ASN1Encodable& obj);
		static ASN1Bool True;
		static ASN1Bool False;
	};
}; // namespace AppliedCryptography
